package com.ruoyi.business.service;

import com.ruoyi.business.domain.BusFygl;
import com.ruoyi.business.domain.statistics.StatisticsBigDecimalBO;
import com.ruoyi.business.domain.vo.BusCbsfyVO;
import com.ruoyi.business.domain.vo.BusFyglSaveVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 费用管理Service接口
 *
 * @author yaowei
 * @date 2021-07-02
 */
public interface IBusFyglService {
    /**
     * 费用类型枚举类型
     */
    String DICT_FYLX = "bus_fylx";

    /**
     * 查询费用管理
     *
     * @param id 费用管理ID
     * @return 费用管理
     */
    public BusFygl selectBusFyglById(Long id);

    /**
     * 查询费用管理列表
     *
     * @param busFygl 费用管理
     * @return 费用管理集合
     */
    public List<BusFygl> selectBusFyglList(BusFygl busFygl);

    /**
     * 新增费用管理
     *
     * @param busFyglSaveVO 费用管理
     * @return 结果
     */
    public int insertBusFygl(BusFyglSaveVO busFyglSaveVO);

    /**
     * 修改费用管理
     *
     * @param busFyglSaveVO 费用管理
     * @return 结果
     */
    public int updateBusFygl(BusFyglSaveVO busFyglSaveVO);

    @Transactional(rollbackFor = Exception.class)
    int saveOrUpdate(List<BusFyglSaveVO> busFyglSaveList);

    /**
     * 批量删除费用管理
     *
     * @param ids 需要删除的费用管理ID
     * @return 结果
     */
    public int deleteBusFyglByIds(Long[] ids);

    /**
     * 删除费用管理信息
     *
     * @param id 费用管理ID
     * @return 结果
     */
    public int deleteBusFyglById(Long id);

    List<StatisticsBigDecimalBO> statisticsByCbsId(Long cbsId, String year);

    /**
     * 承包商年度费用列表
     *
     * @param year 年份
     * @return
     */
    List<BusCbsfyVO> cbsfyList(String year);
}
